package com.wsh.redis.redisdemo.listener;

import lombok.extern.slf4j.Slf4j;
import org.springframework.data.redis.connection.DefaultMessage;
import org.springframework.data.redis.connection.Message;
import org.springframework.data.redis.listener.KeyExpirationEventMessageListener;
import org.springframework.data.redis.listener.RedisMessageListenerContainer;

/**
 * redis监听失效key
 *
 * @author wsh
 * @date 2021/9/18 8:48
 */
@Slf4j
public class RedisListener extends KeyExpirationEventMessageListener {
    public RedisListener(RedisMessageListenerContainer listenerContainer) {
        super(listenerContainer);
    }

    /**
     * 处理key丢失业务逻辑
     *
     * @param message
     */
    @Override
    protected void doHandleMessage(Message message) {
        Message defaultMessage = new DefaultMessage(message.getChannel(), message.getBody());
        // 获取到key
        var redisKey = defaultMessage.toString();
        log.info("当前获取到的key：{}", redisKey);
        log.info("body信息：{}", defaultMessage.getBody());
        log.info("Channel信息：{}", defaultMessage.getChannel());
        super.doHandleMessage(message);
    }
}
